package net.reichholf.dreamdroid.tv.activities; import android.net.Uri; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.FragmentActivity; import android.util.Base64; import com.squareup.picasso.Picasso; import com.squareup.picasso.UrlConnectionDownloader; import net.reichholf.dreamdroid.R; import java.io.IOException; import java.net.HttpURLConnection; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.X509TrustManager; import de.duenndns.ssl.MemorizingTrustManager; /** * Created by Stephan on 16.10.2016. */ public class MainActivity extends FragmentActivity { private MemorizingTrustManager mTrustManager; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.tv_main); try { // set location of the keystore MemorizingTrustManager.setKeyStoreFile("private", "sslkeys.bks"); // register MemorizingTrustManager for HTTPS SSLContext sc = SSLContext.getInstance("TLS"); mTrustManager = new MemorizingTrustManager(this); sc.init(null, new X509TrustManager[]{mTrustManager}, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); HttpsURLConnection.setDefaultHostnameVerifier( mTrustManager.wrapHostnameVerifier(HttpsURLConnection.getDefaultHostnameVerifier())); Picasso.Builder builder = new Picasso.Builder(this); builder.downloader(new UrlConnectionDownloader(this){ @Override protected HttpURLConnection openConnection(Uri path) throws IOException { HttpURLConnection connection = super.openConnection(path); String userinfo = path.getUserInfo(); if(!userinfo.isEmpty()) { connection.setRequestProperty("Authorization", "Basic " + Base64.encodeToString(userinfo.getBytes(), Base64.NO_WRAP)); } return connection; } }); Picasso.setSingletonInstance(builder.build()); } catch (Exception e) { e.printStackTrace(); } } }